/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package Shared;

import java.io.FileInputStream;
import java.io.IOException;
import java.rmi.Remote;
import java.rmi.RemoteException;
import java.util.ArrayList;
import java.util.HashMap;
import javax.swing.JFrame;

/**
 *
 * @author belal
 */
public interface ClientInt extends Remote {

    public boolean chatFriend(String mail) throws RemoteException;

    public void reciveFile(byte[] bufferedReader) throws RemoteException, IOException;

    public void reciveFileend() throws RemoteException;

    public void reciveFilename(String name) throws RemoteException;

    public void sendFile(FileInputStream fis, String path, String name) throws RemoteException;

    public ArrayList<User> signinUser(User user) throws RemoteException;//finish

    public int signupUser(User user) throws RemoteException;//finish

    public void sendMail() throws RemoteException; //send message mail for friend
    //public void setMainForm(MainForm mf) throws RemoteException;

    public void recieveMessage(String message, String ident, User friendUser, User meUser) throws RemoteException;

    // public void getNotification()throws RemoteException;//get notification from friend
    public void sendFile() throws RemoteException;//send file to user

    public int getFriendRequestNotify(User Sender) throws RemoteException;

    public void addFriend(User Sender, String Reciever) throws RemoteException;

    public void updateFriendList() throws RemoteException;

    public ArrayList<User> getFriendList() throws RemoteException;

    public void notifyMyFriend(String mail, String status) throws RemoteException;

    public void notifyFromServer(String msg) throws RemoteException;

    public void stopServer(String msg) throws RemoteException;

    public void checkFriendRequest(String mail) throws RemoteException;

    public void signOut(String mail) throws RemoteException;

    //public JFrame openChat(Message msg)throws RemoteException;
    public void recieveGroupMessage(String message, String ident, User[] friends, ArrayList<String> friendsmail, String user) throws RemoteException;

    public void interactiveMessage(String message, String ident, User friendUser, User meUser) throws RemoteException;

    public void removeMainForm(String mail) throws RemoteException;

    public void updateFormlist() throws RemoteException;

    public void changeStatus(ArrayList<String> mails, String mail, String userName, String status, int statusNo) throws RemoteException;
}
